SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[SP_CONV_MONE_Q04]
/*------------------------------------------------------*/  
/*---- Empresa           : OFISIS S.A.              ----*/  
/*---- Cliente           : OFISIS S.A.              ----*/  
/*---- Nombre FU         : SP_CONV_MONE_Q04         ----*/  
/*---- Desarrollado por  : OFISIS                   ----*/  
/*---- Fecha Creaci?n    : 03/02/2003               ----*/  
/*---- Base de Datos     : SLQ Server               ----*/  
/*---- Versi?n           : 8.0                      ----*/  
/*------------------------------------------------------*/  
/*------------------------------------------------------*/  
/*---Modificado 1 por     : PERCY GARCIA	  ----*/
/*---Fecha Modificaci?n   : 26/02/2004       ----*/
/*---Detalle Modificaci?n :  SE AGREGO ROUND CUANDO CALCULA IMPORTES  ----*/
/*---USADO EN LA PANTALLA DE VOUCHERS CUANDO VALIDA EL SALDO DEL DOC.-----*/
/*------------------------------------------------------*/  
/*------------------------------------------------------*/  
/*---Modificado 2 por    : Percy Garcia       ----*/
/*---Fecha Modificaci?n  : 03/04/2004				----*/
/*---Detalle Modificaci?n: VALID. CASO FACTOR SEA CERO O NULO ----*/
/*------------------------------------------------------*/
/*------------------------------------------------------*/  
/*--- Drop PROCEDURE SP_CONV_MONE_Q04		    ----*/
/*--- Grant All on SP_CONV_MONE_Q04 To Public	    ----*/
/*--- SP_CONV_MONE_Q04 '01','LIB',1,'PAC','COM',0.64,'2002/11/15',00000,0 ONV OUTPUT---*/
/*--- SP_CONV_MONE_Q04 '01','SOL','DOL','PAC','COM','01/13/2004', 3700, 'A', 0 ---*/
/*------------------------------------------------------*/  
  @ISCO_EMPR            TD_VC_002,
  @ISCO_MONE_ORIG	TD_VC_003,
  @ISCO_MONE_DEST       TD_VC_003,
  @ISTI_CAMB_0001	TD_VC_003,
  @ISTI_CAMB_0002	TD_VC_003,
  @IDFE_CAMB		TD_DT_001,
  @INIM_ORIG	 	TD_NU_016_004,
  @ISTI_ORIG            TD_VC_001, -- Invocado por (A)pt o (P)rocedure
  @ONIM_CONV            TD_NU_016_004 OUTPUT  
  
AS
Begin
  Declare
  @VSCO_MON1       TD_VC_003,
  @VSCO_MONE_BAS1  TD_VC_003,
  @VSTI_OPE1       TD_VC_001,
  @VSCO_MON2       TD_VC_003,
  @VSCO_MONE_BAS2  TD_VC_003,
  @VSTI_OPE2       TD_VC_001,
  @VNFA_CAMB_0001  TD_NU_015_006, 
  @VNFA_CAMB_0002  TD_NU_015_006,
  @VNIM_CONV       TD_NU_016_004

  ---- Verificamos si ambas monenas son iguales
  If @ISCO_MONE_ORIG !=  @ISCO_MONE_DEST
  Begin
    ----  Recupero monedas
    Select @VSCO_MON1 = CO_MON1,
	   @VSCO_MONE_BAS1 = CO_MONE_BAS1,
           @VSTI_OPE1 = TI_OPE1,
	   @VSCO_MON2 = CO_MON2,
           @VSCO_MONE_BAS2 = CO_MONE_BAS2,
	   @VSTI_OPE2 = TI_OPE2
    From   TMCONV_MONE 
    Where  CO_MONE_ORIG   = @ISCO_MONE_ORIG
    And    CO_MONE_DEST   = @ISCO_MONE_DEST 

    ---- Solo convierte para Paso 1
    If @VSCO_MON2 is null and @INIM_ORIG >0 --And @VNFA_CAMB_0001 >0
    Begin

      Select @VNFA_CAMB_0001 = 
           IsNull(Case  @ISTI_CAMB_0002
             When  'COM' Then FA_CMPR_OFIC
             Else   FA_VNTA_OFIC 
	   End, 0) 
      From    TCFACT_CAMB
      Where   CO_MONE      = @VSCO_MON1
      And     CO_MONE_BASE = @VSCO_MONE_BAS1
      And     FE_CAMB      = @IDFE_CAMB

      If @VNFA_CAMB_0001 Is Null Or @VNFA_CAMB_0001 = 0  
         Select @VNFA_CAMB_0001 = 1  

      If @VSTI_OPE1 = 'M'
        Select @VNIM_CONV  =  Round(@INIM_ORIG * @VNFA_CAMB_0001, 2)
      Else
        Select @VNIM_CONV  =  Round(@INIM_ORIG / @VNFA_CAMB_0001, 2)
    End

    ---- Convierte cuando tiene Paso 1 y Paso 2
    If @VSCO_MON1 is not null and @VSCO_MON2 is not null and @INIM_ORIG >0 --and @VNFA_CAMB_0001 >0
    Begin
      
      Select @VNFA_CAMB_0001 = 
           IsNull(Case  @ISTI_CAMB_0002
             When  'COM' Then FA_CMPR_OFIC
             Else   FA_VNTA_OFIC 
	   End, 0) 
      From    TCFACT_CAMB
      Where   CO_MONE      = @VSCO_MON1
      And     CO_MONE_BASE = @VSCO_MONE_BAS1
      And     FE_CAMB      = @IDFE_CAMB

      If @VNFA_CAMB_0001 Is Null Or @VNFA_CAMB_0001 = 0  
         Select @VNFA_CAMB_0001 = 1  

      If @VSTI_OPE1 = 'M'
        Select @VNIM_CONV  =  Round(@INIM_ORIG * @VNFA_CAMB_0001, 2)
      Else
        Select @VNIM_CONV  =  Round(@INIM_ORIG / @VNFA_CAMB_0001, 2)

      Select @VNFA_CAMB_0002 = 
           IsNull(Case  @ISTI_CAMB_0002
             When  'COM' Then FA_CMPR_OFIC
             Else   FA_VNTA_OFIC 
	   End, 0) 
      From    TCFACT_CAMB
      Where   CO_MONE      = @VSCO_MON2
      And     CO_MONE_BASE = @VSCO_MONE_BAS2
      And     FE_CAMB      = @IDFE_CAMB

      If @VNFA_CAMB_0002 Is Null Or @VNFA_CAMB_0002 = 0  
         Select @VNFA_CAMB_0002 = 1  

        If @VSTI_OPE2 = 'M'
          Select @VNIM_CONV  =  Round(@VNIM_CONV * @VNFA_CAMB_0002, 2)
        Else
          Select @VNIM_CONV  =  Round(@VNIM_CONV / @VNFA_CAMB_0002, 2)
      End
    ---- Si importe original es 0
    If @INIM_ORIG = 0
	Select @VNIM_CONV = 0
    End

  If @ISCO_MONE_ORIG =  @ISCO_MONE_DEST
     Select @VNIM_CONV  =  Round(@INIM_ORIG, 2)

   If @ISTI_ORIG = 'A'
      Select @VNIM_CONV
   Else
      Select @ONIM_CONV = @VNIM_CONV
End

Return
/*----------------fin Funcion---------------------------*/



GO
